public class Compare {
    public static void main(String[] args) {
        //字符串两种比较方式的不同
        //==比较引用对象的不同
        String str1 = "hello";
        String str2 = "hello";
        String str3 = new String("hello");
        String str4 = new String("hello");
        String str5 = str3;
        System.out.println(str1==str2);//1、2引用的都是常量字符串的地址
        System.out.println(str1==str3);//3引用的是new String的地址，new String对象引用的是常量字符串的地址
        System.out.println(str3==str4);//3,4引用不同的new String对象
        System.out.println(str3==str5);//3,5引用的是同一个new String对象
        //equals方法比较的是字典序(引用对象的字符大小顺序也就是内容)
        System.out.println(str1.equals(str2)); // true
        System.out.println(str1.equals(str3)); // true
        System.out.println(str3.equals(str4));// true
        System.out.println(str3.equals(str5));// true
        //compareTo比较字典序，返回值为字符差值
        String s1 = new String("abc");
        String s2 = new String("ac");
        String s3 = new String("abc");
        String s4 = new String("abcdef");
        System.out.println(s1.compareTo(s2)); // 不同输出字符差值-1
        System.out.println(s1.compareTo(s3)); // 相同输出 0
        System.out.println(s1.compareTo(s4)); // 前k个字符完全相同，输出长度差值 -3
        //compareToIgnoreCase与compareTo不同的是忽略大小写
        String s5 = new String("Abc");
        System.out.println(s1.compareToIgnoreCase(s2)); // 不同输出字符差值-1
        System.out.println(s1.compareToIgnoreCase(s5)); // 相同输出 0
        System.out.println(s1.compareToIgnoreCase(s4)); // 前k个字符完全相同，输出长度差值 -3
    }
}
